package com.msb; /**
 * qccr.com Inc.
 * Copyright (c) 2018-2020 All Rights Reserved.
 */

import java.io.Serializable;

/**
 * @author whf
 * @version $: 二进制.java v1.0  2024-12-14 13:07:16  Exp $
 */
public class _01二进制位运算 implements Serializable {

    private static void printBinary(int i) {
        // 1.int是32位二进制，long是64位
        // 2.int值的范围是-2^31~2^31-1
        // 3.二进制负数取值逻辑是取反（~）然后+1，究其底层加法可以用一套代码而不用区分正负数(效率高)，原因推导即可-1加1
        // 4.二进制运算符~取反,&同为1则1否则0,|只要有个1即为1
        // 5.>>用原本的符号位补全,>>>不用原本符号位
        for (int j = 31; j >= 0; j--) {
            System.out.print((1 << j & i) == 0 ? "0" : "1");
        }
        System.out.println();
    }

    public static void main(String[] args) {
        printBinary(0|0);
        System.out.println(1024 & 1023);
    }
}
